"""
@Author  : 康帅
@Time    : 2021/3/18 9:13
@Function: 代理模式
"""

"""
什么是代理模式：
为其他对象提供一种代理以控制对这个对象的访问。一个对象完成某项动作或任务，是通过对另一个对象的引用来完成的，这种模式叫代理模式

优点：
1.代理模式能够协调调用者与被调用者，在一定程度上可以降低耦合度
2.可以灵活的隐藏被代理对象部分功能和服务，也可以增加额外的功能和服务

缺点：
1.由于客户端和真实主题之间加了代理，有些类型的代理可能会导致请求速度慢
2.实现代理模式需要额外的工作，有些代理模式实现比较复杂

应用场景：
1.不想或者不能直接引用一个对象时，如在移动端加载网页信息时，因为下载真实大图比较耗费流量、影响性能，
可以用一个小图代替进行渲染（用一个代理对象去下载小图），在真正点击图片时，才下载大图，显示大图效果。还有HTML中的占位符，其实也是代理模式的思想。
2.对一个对象的功能进行加强时，如在字体（Font）渲染时，对粗体（BoldFont）进行渲染时，
可使用字体Font对象进行代理，只要在对Font进行渲染后进行加粗的操作即可。
3.各种特殊用途的代理：远程代理、虚拟代理、Copy-on-Write 代理、保护（Protect orAccess）代理、
Cache代理、防火墙（Firewall）代理、同步化（Synchronization）代理、智能引用（Smart Reference）代理
"""